home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Tools (InfoMagic)
/
Internet Tools.iso
/
news
/
moderating
/
atari-groups.shar.Z
/
atari-groups.shar
Wrap
Internet Message Format
|
1992-06-05
|
54KB
From Steven.Grimm@eng.sun.com Sat Jun 6 00:46:17 1992
Received: from Sun.COM by sparky.IMD.Sterling.COM (5.65c/IDA-1.4.4)
id AA11600; Sat, 6 Jun 1992 00:46:05 -0500
Return-Path: <Steven.Grimm@eng.sun.com>
Received: from Eng.Sun.COM (zigzag-bb.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.1)
id AA29251; Fri, 5 Jun 92 22:44:15 PDT
Received: from twitterpater.Eng.Sun.COM by Eng.Sun.COM (4.1/SMI-4.1)
id AA10027; Fri, 5 Jun 92 22:44:21 PDT
Received: by twitterpater.Eng.Sun.COM (5.0/SMI-SVR4)
id AA06951; Sat, 6 Jun 92 05:44:33 GMT
Date: Sat, 6 Jun 92 05:44:33 GMT
From: Steven.Grimm@eng.sun.com (Steven Grimm)
Message-Id: <9206060544.AA06951@twitterpater.Eng.Sun.COM>
To: kent@imd.sterling.com
Subject: Re: Moderator Tools Archive
Content-Length: 53029
Status: OR
Here you go:
--- cut here ("atari-groups.shar") ---
This file contains the tools used to moderate comp.binaries.atari.st and
comp.sources.atari.st. Some of them may be generally useful to other
moderators, especially the "tweak" program.
See the README file for details.
#!/bin/sh
# shar: Shell Archiver (v1.22)
#
# Run the following text with /bin/sh to create:
# Changing.volume
# Header.binaries
# Header.binaries.multi
# Header.sources
# Header.sources.multi
# Index.binaries.h
# Index.sources.h
# Intro.binaries
# Intro.sources
# Makefile
# README
# autoindex-intro
# dehex.c
# fcat.c
# tweak.c
# ucat.c
# newvol
# nodocs.b
# post
# sedfile
# seq.binaries
# seq.sources
# unpack.ms
# update-autoindex
# volume
# wrong-group
#
sed 's/^X//' << 'SHAR_EOF' > Changing.volume &&
XRun newvol sources or newvol binaries
Xpost intro/unpacking instructions/index
X
Xnote: sources and binaries temp directories must be called "sources" and
X "binaries" or tweak and newvol will mess up.
SHAR_EOF
chmod 0600 Changing.volume || echo "restore of Changing.volume fails"
sed 's/^X//' << 'SHAR_EOF' > Header.binaries &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XNewsgroups: comp.binaries.atari.st
XSubject: v%Vi%I: %t -- %d
XMessage-ID: %m
XReply-To: %s
XKeywords: %k
XApproved: koreth@twitterpater.eng.sun.com
X
XSubmitted-by: %s
XPosting-number: Volume %v, Issue %i
XArchive-name: %t
X
SHAR_EOF
chmod 0600 Header.binaries || echo "restore of Header.binaries fails"
sed 's/^X//' << 'SHAR_EOF' > Header.binaries.multi &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XNewsgroups: comp.binaries.atari.st
XSubject: v%Vi%I: %t -- %d part%P/%N
XMessage-ID: %m
XReferences: %r
XReply-To: %s
XKeywords: %k
XApproved: koreth@twitterpater.eng.sun.com
X
XSubmitted-by: %s
XPosting-number: Volume %v, Issue %i
XArchive-name: %t/part%P
X
SHAR_EOF
chmod 0600 Header.binaries.multi || echo "restore of Header.binaries.multi fails"
sed 's/^X//' << 'SHAR_EOF' > Header.sources &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XNewsgroups: comp.sources.atari.st
XSubject: v%Vi%I: %t -- %d
XMessage-ID: %m
XReply-To: %s
XKeywords: %k
XApproved: koreth@twitterpater.eng.sun.com
X
XSubmitted-by: %s
XPosting-number: Volume %v, Issue %i
XArchive-name: %t
X
SHAR_EOF
chmod 0600 Header.sources || echo "restore of Header.sources fails"
sed 's/^X//' << 'SHAR_EOF' > Header.sources.multi &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XNewsgroups: comp.sources.atari.st
XSubject: v%Vi%I: %t -- %d part%P/%N
XMessage-ID: %m
XReferences: %r
XReply-To: %s
XKeywords: %k
XApproved: koreth@twitterpater.eng.sun.com
X
XSubmitted-by: %s
XPosting-number: Volume %v, Issue %i
XArchive-name: %t/part%P
X
SHAR_EOF
chmod 0600 Header.sources.multi || echo "restore of Header.sources.multi fails"
sed 's/^X//' << 'SHAR_EOF' > Index.binaries.h &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XSubject: v17INF2: Index of previously-published binaries
XNewsgroups: comp.binaries.atari.st,comp.sys.atari.st
XApproved: koreth@twitterpater.eng.sun.com
XExpires: 60days
X
XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
XPosting-number: Volume 17, Info 2
XArchive-name: Index
X
XFiles listed below can be requested from the Atari archive server,
Xarchive-server@twitterpater.eng.sun.com. Send it a mail message containing
Xthe word "help" for information.
X
X[file list deleted]
SHAR_EOF
chmod 0600 Index.binaries.h || echo "restore of Index.binaries.h fails"
sed 's/^X//' << 'SHAR_EOF' > Index.sources.h &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XSubject: v05INF2: Index of previously-published sources
XNewsgroups: comp.sources.atari.st,comp.sys.atari.st
XApproved: koreth@twitterpater.eng.sun.com
XExpires: 60days
X
XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
XPosting-number: Volume 5, Info 2
XArchive-name: Index
X
X[file list deleted]
SHAR_EOF
chmod 0600 Index.sources.h || echo "restore of Index.sources.h fails"
sed 's/^X//' << 'SHAR_EOF' > Intro.binaries &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XSubject: v17INF1: Introduction to comp.binaries.atari.st
XNewsgroups: comp.binaries.atari.st,comp.sys.atari.st
XApproved: koreth@twitterpater.eng.sun.com
XExpires: 120days
X
XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
XPosting-number: Volume 17, Info 1
XArchive-name: intro
X
XThis is the first of three introductory articles about comp.binaries.atari.st.
XThis one describes how to submit binaries to the newsgroup. A companion
Xarticle lists all previously-published binaries, and a third article explains
Xhow to retrieve and unpack binaries posted by others.
X
XI am always looking for suggestions on how to improve the usefulness
Xof the newsgroup, and can be contacted as listed below.
X
X-- Steven Grimm
X koreth@twitterpater.eng.sun.com
X
X--------------------
X
XSubject: Submitting binaries for publication
X
XItems intended for posting or queries and problem notes should be sent to
Xatari-binaries@twitterpater.eng.sun.com. If you are on a UUCP-only site, you
Xcan send them to {backbone}!sun!twitterpater.eng!atari-binaries. Note that
Xcomp.binaries.atari.st is not the correct place to ask general questions
Xor to ask, "Does anyone have software that does X?" Post such requests to
Xcomp.sys.atari.st or comp.sys.atari.st.tech.
X
XIf you want verification of arrival, so say in a cover note, or at the
Xbeginning of your submission, if it is small. I try to verify that a
Xprogram works, and if I can't get it to work, I may hold up posting it
Xfor a couple of days. Please note that, except in rare cases, software
Xwithout documentation will not be published. The backlog from receipt
Xto posting varies from one to four weeks depending mostly on the set
Xof submissions currently in my queue.
X
XIf you are submitting both sources and binaries, PLEASE send the two
Xseparately. If I have to separate your sources from your binaries by
Xhand, your submission will most likely sit on the back burner for a
Xwhile.
X
XPlease include a description of your program at the top of your article.
XLook at old issues of comp.binaries.atari.st for examples of the sorts
Xof descriptions I'm looking for. I don't write the descriptions at the
Xtops of the articles; what you see is what the submitters gave me.
X
XAlso, as of volume 8, I will only accept binaries packed with an archiver
Xfor which source code is widely available. For the time being, this means
Xarc, zoo (including 2.1), and lharc. If you want to use a nifty new archiver,
Xmake the source code available to the public (posting to comp.sources.atari.st
Xis fine.) I reserve the right to repack binaries with another archiver if
Xthe other archiver saves a significant amount of space, or has other
Xadvantages.
X
XIf you're submitting a demo of a commercial program, or a shareware program,
Xplease keep the amount of advertising to an absolute minimum. The net
Xgods become angry when people try to use the net as a free advertising
Xmedium, and I'd like to keep comp.binaries.atari.st out of trouble. If
Xyou want to solicit orders, do it in a README file or an About... dialog
Xbox, not in a message that comes up every time the user does something.
XIn other words, treat the net like a PBS station (apologies to those
Xoutside the US.) I will not accept programs which I feel are excessively
Xcommercial. I'm aware that commercial demos and shareware are often very
Xuseful (to the users on the net,) which is why I allow them at all.
X
X--------------------
X
XSubject: The structure of comp.binaries.atari.st articles
X
XEach posting in comp.binaries.atari.st is called an "issue"; there are
Xroughly 100 issues to a volume. The division is arbitrary and may vary.
XThere are two types of articles in comp.binaries.atari.st: binaries and
X"information postings." They can be distinguished by the subject line:
X
X Subject: v17INF2: Index and other info
X
XThis first word in the title identifies this as the third info posting of
Xvolume six. Similarly, the subject line shown below:
X
X Subject: v17i081: deadwrtr -- Ouija-word processor
X
Xidentifies this as the 81st binary article in Volume 17. Large programs are
Xbroken up into smaller pieces, and have subject lines that look like
Xthis:
X
X Subject: v17i041: zx81 -- Timex/Sinclair emulator part04/39
X
XCertain information about the system configuration required to use the
Xprogram is given on the keywords line.
X
X Keywords: uuencode, 1meg, medium, high
X
XThis means that the program requires at least one meg of RAM and runs in
Xmedium or high resolution. Following is a list of keywords; new ones may
Xbe added as needed. They are mostly self-explanatory.
X
X uuencode - program is uuencoded (UNIX uudecode required to unpack)
X uue - program is uuencoded (ST uud required to unpack)
X arc - program is archived (arc required to unpack)
X zoo - program is a zoo archive (zoo required to unpack)
X zoo-high - program is a zoo 2.1 high-compression archive (zoo21 req'd)
X lharc - program is an lharc archive (lharc required to unpack)
X high - high resolution
X medium - medium resolution
X low - low resolution
X 1meg - needs 1 meg of RAM
X
XThe References: line, if present, points to the previous part of a multi-
Xpart program, so that newsreaders (trn, nn, etc.) which can follow threads
Xwill recognize a large program as a single thread.
X
XThe first few lines of an article are auxiliary headers that look like this:
X
X Submitted-by: jackt@atari.UUCP (Jack Tramiel)
X Posting-number: Volume 17, Issue 80
X Archive-name: rsn
X
XThe "Submitted by" is the author of the program. If you have comments about
Xthe binaries published in comp.binaries.atari.st this is the person to contact.
XWhen possible, this address is in domain form, otherwise it is a UUCP bang
Xpath relative to some major (backbone) site.
X
XThe "Reply-To:" header line in the article's main header points to the
Xsubmitter, to make commenting about binaries easier.
X
XThe second line repeats the volume/issue information for the aide of notes
Xsites and automatic archiving programs.
X
XThe Archive-name is the "official" name of this program in the archive. Large
Xpostings will have names that look like this:
X
XArchive-name: desktop/part01
X
XSince most archive sites run UNIX, articles are given UNIX-style filenames
Xrather than ST-style filenames. I do make an effort to keep filenames to
X8 characters or smaller, however.
X
X--------------------
X
XSubject: Reporting and tracking bugs and patches to postings
X
XUpdates to programs are usually announced in comp.sys.atari.st. When
Xlarge changes are made to a program, the entire thing will be reposted
Xto comp.binaries.atari.st.
X
XTo report bugs, contact the person listed in the Submitted-to header.
XOften there is a contact address in a README file, too. I do not maintain
Xthe programs I moderate, so don't send your bug reports to me.
X
XIf the program documentation mentions some file that isn't included in
Xthe posting (for instance, a font editor's documentation might refer to
Xsome sample fonts), contact the submitter, not me. I post articles in
Xtheir entirety, so if it isn't posted, I probably don't have it.
SHAR_EOF
chmod 0600 Intro.binaries || echo "restore of Intro.binaries fails"
sed 's/^X//' << 'SHAR_EOF' > Intro.sources &&
XFrom: koreth@twitterpater.eng.sun.com (Steven Grimm)
XSubject: v05INF1: Introduction to comp.sources.atari.st
XNewsgroups: comp.sources.atari.st,comp.sys.atari.st
XApproved: koreth@twitterpater.eng.sun.com (Steven Grimm)
XExpires: 120days
X
XSubmitted-by: koreth@twitterpater.eng.sun.com (Steven Grimm)
XPosting-number: Volume 5, Info 1
XArchive-name: intro
X
XThis is the first of two introductory articles about comp.sources.atari.st.
XThis one describes how to submit source to the newsgroup, where the
Xarchive sites are, and how to contact them. The companion article lists
Xall previously-published sources.
X
XI am always looking for suggestions on how to improve the usefulness
Xof the newsgroup, and can be contacted as listed below.
X
X-- Steven Grimm
X koreth@twitterpater.eng.sun.com
X
X--------------------
X
XSubject: Submitting source for publication
X
XItems intended for posting or queries and problem notes should be sent to
Xatari-sources@twitterpater.eng.sun.com. If you are on a UUCP-only site, you
Xcan send them to sun!twitterpater.eng!atari-sources.
X
XIf you want verification of arrival, so say in a cover note, or at the
Xbeginning of your submission, if it is small. I try to verify that a
Xprogram works, and if I can't get it to work, I may hold up posting it
Xfor a couple of days. Please note that, except in rare cases, source
Xwithout documentation will not be published. The backlog from receipt
Xto posting varies from one to four weeks depending mostly on the set
Xof submissions currently in my queue.
X
XI prefer that you submit sources and binaries separately, as it's a
Xpain to separate them, and such submissions are invariably placed on
Xthe back burner. Sources should be submitted in the same format as
Xbinaries -- uuencoded arc, zoo, or lzh files. Please use Pierre Dumas'
X"uue" program if possible, as it can correct some common transmission
Xerrors. Split long submissions up into reasonable (less than 50K)
Xchunks. "uue" will do this for you, if you use "uue -700 file" to
Xencode.
X
XPlease inform me of any special system requirements, and what development
Xenvironment was used, so that I can properly test your submission and
Xlabel it when I post it.
X
X--------------------
X
XSubject: The structure of comp.sources.atari.st articles
X
XEach posting in comp.sources.atari.st is called an "issue"; there are
Xroughly 100 issues to a volume. The division is arbitrary and may vary.
XThere are two types of articles in comp.sources.atari.st: sources and
X"information postings." They can be distinguished by the subject line:
X
X Subject: v05INF2: Index for Volume 1 and other info
X
XThis first word in the title identifies this as the third info posting of
Xvolume one. Similarly, the subject line shown below:
X
X Subject: v05i081: godsrc -- Universe simulator
X
Xidentifies this as the 81st source article in Volume 5. Large sources are
Xbroken up into smaller pieces, and have subject lines that look like
Xthis:
X
X Subject: v05i088: decbustr -- VMS clone in ST-LOGO, Part03/08
X
XCertain information about the system configuration required to use the
Xprogram is given on the keywords line.
X
X Keywords: MWC, Megamax, 1meg, high
X
XThis means that the program compiles with Mark Williams or Megamax C,
Xrequires at least one meg of RAM and only runs in high resolution. Following
Xis a list of keywords; new ones may be added as needed. They are mostly self-
Xexplanatory.
X
X Alcyon - Alcyon C (included with Atari developer's kit)
X MWC - Mark Williams C
X Megamax - Megamax C
X Laser - Laser C
X Lattice - Lattice C
X C - Any C compiler
X OSS - OSS Personal Pascal
X BASIC - ST BASIC (this is not a joke!)
X uuencode - program is uuencoded (uudecode required to unpack)
X arc - program is archived (arc required to unpack)
X high - high resolution
X medium - medium resolution
X low - low resolution
X 1meg - needs 1 meg of RAM
X
XThe References: line, if present, points to the previous part of a multi-
Xpart program, so that newsreaders (trn, nn, etc.) which can follow threads
Xwill recognize a large program as a single thread.
X
XThe first few lines of an article are auxiliary headers that look like this:
X
X Submitted-by: david@bdt.UUCP (David Beckmeyer)
X Posting-number: Volume 5, Issue 80
X Archive-name: micro-rtx
X
XThe "Submitted by" is the author of the program. If you have comments about
Xthe sources published in comp.sources.atari.st this is the person to contact.
XWhen possible, this address is in domain form, otherwise it is a UUCP bang
Xpath relative to some major (backbone) site.
X
XThe second line repeats the volume/issue information for the aide of notes
Xsites and automatic archiving programs.
X
XThe Archive-name is the "official" name of this source in the archive. Large
Xpostings will have names that look like this:
X
XArchive-name: desktop/part01
X
XPlease try to use this name when requesting that sources be mailed to you.
XAlso, note that the "part number" given in the title, and the archive name
Xgiven in the auxiliary header need not be identical.
X
XSince most archive sites run UNIX, articles are given UNIX-style filenames
Xrather than ST-style filenames. I do try to limit filenames to eight
Xcharacters whenever possible, though.
X
X--------------------
X
XSubject: Reporting and tracking bugs and patches to postings
X
XMost of the time, bugs and updates will be posted to comp.sys.atari.st.
XSometimes, "official" updates from the author will be posted submitted to
Xcomp.sources.atari.st so that they are archived with the sources.
X
XSince there is no easy way to apply source code patches on the ST, changes
Xto a program often result in a whole new version being posted.
X
XTo report bugs, contact the person listed in the Submitted-to header.
XOften there is a contact address in a README file, too. I do not maintain
Xthe sources I moderate, so don't send your bug reports to me.
X
X--------------------
X
XSubject: Listing of archive sites in no particular order
X
X1. Site twitterpater is running an archive server, which automatically answers
X mail requests. Send mail to archive-server@twitterpater.eng.sun.com with the
X word "help" in the message body for more information. Both the sources
X and binaries groups are archived on twitterpater.
X2. Unido is the European archive site. It's running an archive server
X similar to twitterpater's; send "help" to unido!archive-server for more
X information. Unido archives both the sources and binaries groups.
X
XIf you know of additional sites which reliably archive comp.sources.atari.st
X(or comp.binaries.atari.st, for that matter), please tell me so I can add
Xthem to the list.
SHAR_EOF
chmod 0600 Intro.sources || echo "restore of Intro.sources fails"
sed 's/^X//' << 'SHAR_EOF' > Makefile &&
XCFLAGS = -O
XLDFLAGS = -s
X
Xall: unpack.cooked tweak
X
Xtweak: tweak.c
X $(CC) $(CFLAGS) $(LDFLAGS) tweak.c -o $@
X
Xunpack.cooked: unpack.ms
X cp -i unpack.cooked unpack.cooked.old
X tbl unpack.ms | nroff -ms -Tlpr | col > unpack.cooked
X -diff -c unpack.cooked.old unpack.cooked > unpack.diffs
SHAR_EOF
chmod 0600 Makefile || echo "restore of Makefile fails"
sed 's/^X//' << 'SHAR_EOF' > README &&
XThese are the tools I use to moderate comp.sources.atari.st and comp.binaries.
Xatari.st. My setup is unusual in that I have an archive server (mail-based) on
Xmy machine, so these tools maintain that as well.
X
XThis depends on there being a "binaries" directory and a "sources" directory,
Xinside of which are files Index.1 (index of the current volume) and Index.2
X(index of all previous articles.)
X
XWhat I generally do when something new comes in:
X
X1. Wait way too long. :)
X2. Unpack the program and test it.
X3. Repackage it if necessary; I try to keep all outgoing messages under 50K,
X so if necessary I split large postings up into several parts. Multipart
X postings go into subdirectories, in files named "part01", "part02", etc.
X I also repackage if the submitter used a really old archiver with lousy
X compression, etc.
X4. Run "tweak filename" or, on multipart postings, "tweak part*". The tweak
X program and its support files (Header.*) do 90% of the work.
X5. Run "post b programname" or "post s programname" depending on whether the
X file is going to comp.binaries.atari.st or comp.sources.atari.st. (Yeah,
X it should look at the path like tweak does. Sue me.) The post script
X is smart about multipart postings ("programname" can be a directory) and
X will limit the number of messages that go out per invocation by fiddling
X with the permissions of parts. It also copies the files to the appropriate
X archive directory when everything is posted.
X
XA nightly cron job (update-autoindex) runs a diff of the previous day's index
Xand today's index, mailing the diff results to a list of people who don't
Xreceive the newsgroup but are able to access the mail server.
X
XThe manifest:
X
XChanging.volume
X A list of what I have to do to change to a new volume in either group.
X Used to be much longer before I wrote newvol.
X
XHeader.binaries
XHeader.binaries.multi
XHeader.sources
XHeader.sources.multi
Xsedfile
Xseq.binaries
Xseq.sources
X Used by the tweak program.
X
XIndex.binaries.h
XIndex.sources.h
X The Index.2 files from each directory with a news header, for posting
X at the start of each volume.
X
XIntro.binaries
XIntro.sources
Xunpack.ms
X Introductory blurbs about the two groups.
X
XMakefile
X The makefile (duh.) Doesn't build everything.
X
XREADME
X You are in trouble if you can't figure this one out.
X
Xautoindex-intro
X A text file that I mail to people who want to know about the automatic
X notification by mail of new things in the archive.
X
Xdehex.c
X A utility for decoding the occasional weird-format file from BITNET.
X
Xnewvol
X A script that does most of the work of switching to a new volume,
X creating directories and initializing the index files.
X
Xnodocs.b
X A blurb asking people to include docs with binary submissions.
X
Xpost
X The aforementioned post script.
X
Xtweak.c
X The tweak program.
X
Xucat.c
X A dumb program for gluing together multipart uuencoded submissions
X that people didn't bother running through a deluxe uuencode like "uue".
X
Xupdate-autoindex
X Run once a day by cron.
X
Xvolume
X Output the current volume number (used by tweak and post)
X
Xwrong-group
X A blurb telling people they should post to comp.sys.atari.st.
X
XThat's about it. This is automated enough to keep me happy; it could be
Xmade more so (e.g. tweak could put things in an "outgoing" queue that gets
Xscanned daily by a cron job, eliminating the need for manual use of the
X"post" script.)
X
X-Steve
X koreth@eng.sun.com
SHAR_EOF
chmod 0600 README || echo "restore of README fails"
sed 's/^X//' << 'SHAR_EOF' > autoindex-intro &&
XIf you request the autoindex service, you will receive updates to the
Xindex of Atari binaries and sources available on twitterpater. You can then
Xretrieve desired sources and binaries from the archive server.
X
XFor more information about the archive server itself, or to see what's
Xalready available on the archives, send the word "help" in a mail message
Xto archive-server@twitterpater.eng.sun.com. If you decide to sign up for
Xautomatic indexes, send a request to autoindex-request@twitterpater.eng.sun.com.
SHAR_EOF
chmod 0600 autoindex-intro || echo "restore of autoindex-intro fails"
sed 's/^X//' << 'SHAR_EOF' > dehex.c &&
X/*
X * Hex-to-binary utility -- conquer BITNET mailers!!
X *
X * Restore binary file from a text file with hexadecimal digits
X *
X * Michal Jaegermann, 19 March 1989
X */
X
X#include <stdio.h>
X#include <string.h>
X#define BSIZE 128
X
Xmain(argc, argv)
Xint argc;
Xchar **argv;
X{
X int ch, count = 0;
X FILE *fin, *fout;
X char inbuf[BSIZE+2];
X char outname[14];
X
X if (argc != 2) {
X fprintf(stderr, "usage: %s <infile>\n", argv[0]);
X exit(1);
X }
X
X if (NULL == (fin = fopen(argv[1],"r"))){
X fprintf(stderr, "cannot find input file %s\n", argv[1]);
X exit(1);
X }
X /* search for BEGIN line */
X for(;;) {
X if (NULL == fgets(inbuf, BSIZE, fin)){
X fprintf(stderr, "No BEGIN line\n");
X fclose(fin);
X exit(1);
X }
X sscanf(inbuf, " %12s", outname);
X if (0 == strcmp("BEGIN", outname)) break;
X if ('\n' != inbuf[strlen(inbuf) - 1]) {
X while ('\n' != (ch = getc(fin))) {
X ; /* eat a remainder of a line */
X }
X }
X }
X
X /* get an output file name */
X sscanf(inbuf, " %*5s %12s", outname);
X
X if (NULL == (fout = fopen(outname,"wb"))){
X fprintf(stderr, "cannot open output file %s", outname);
X fclose(fin);
X exit(1);
X }
X
X /* do the actual job */
X while (1 == fscanf(fin, " %02x", &ch)) {
X putc((char) ch, fout);
X }
X fclose(fout);
X
X /* just a check for completeness */
X fscanf(fin, " %3s", inbuf);
X if (0 != strcmp("ND", inbuf)) { /* a little bit of cheating */
X fprintf(stderr, "%s -- END line not found in %s\n",
X inbuf, argv[1]);
X }
X fclose(fin);
X exit(0);
X}
SHAR_EOF
chmod 0600 dehex.c || echo "restore of dehex.c fails"
sed 's/^X//' << 'SHAR_EOF' > fcat.c &&
Xmain(argc, argv)
Xchar **argv;
X{
X char buf[4096];
X int fd, bred;
X
X fd = open(argv[1], 0);
X if (fd < 0)
X exit(-1);
X
X while ((bred = read(fd, buf, sizeof(buf))) > 0)
X {
X write(1, buf, bred);
X read(0, buf, 1);
X }
X}
X
SHAR_EOF
chmod 0600 fcat.c || echo "restore of fcat.c fails"
sed 's/^X//' << 'SHAR_EOF' > tweak.c &&
X#include <stdio.h>
Xchar *index(), *rindex();
X
X/*
X * TWEAK.C
X *
X * Delete mail headers from files and insert UseNet headers.
X *
X * usage:
X * tweak files
X *
X * The program will prompt for the issue number to start with, keywords,
X * and other information for the header. Then it will perform substitutions
X * of the following strings from a header file:
X *
X * %v Volume number of the appropriate newsgroup
X * %V Volume number, in %02d form
X * %i Issue number
X * %I Issue number, in %03d form
X * %t Title (directory name)
X * %d Description
X * %P Part number, in %02d form
X * %N Number of parts, in %02d form
X * %m A unique message ID
X * %r The previous message ID, if any
X * %s The submitter's name/address
X * %k Keywords
X */
X
X/* Header file. */
XFILE *head;
X
Xchar title[16], description[60], submitter[70], group[16], keywords[70],
X seqf[80], fromline[256], id[50], oldid[50];
Xint parts, issue, part = 1, upind = 1, volume;
X
Xmain(argc, argv)
Xchar **argv;
X{
X FILE *in, *out;
X char mailhead[5];
X
X parts = argc - 1;
X id[0] = '\0';
X
X init_info(argv[1]); /* Query me for stuff */
X init_net(); /* Open Header file */
X
X while (part < argc)
X {
X printf("Tweaking %s (", argv[part]);
X
X strcpy(oldid, id);
X messageid(id);
X in = fopen(argv[part], "r");
X out = fopen("#temp", "w");
X/* Automatically sense a mail header, if it's there. The first four
X characters will be "From". */
X fgets(mailhead, 5, in);
X rewind(in);
X if (strcmp(mailhead, "From"))
X printf("no");
X else
X {
X printf("stripping");
X inhale_header(in);
X }
X puts(" header)");
X exhale_header(out);
X copy(in, out);
X fclose(in);
X fclose(out);
X unlink(in);
X rename("#temp", argv[part]);
X add_index(argv[part]);
X part++;
X issue++;
X }
X out = fopen(seqf, "w");
X fprintf(out, "%d\n", issue);
X fclose(out);
X}
X
X/* Generate a message ID. */
Xmessageid(buf)
Xchar *buf;
X{
X sprintf(buf, "<%s.%d.%d@twitterpater.eng.sun.com>", group, volume,issue);
X}
X
Xinit_info(file)
Xchar *file;
X{
X FILE *seq;
X char buf[30], command[100], *nl;
X
X/* Get the sender's address. */
X sprintf(fromline, "sed -f /lhome/twitterpater/koreth/Atari/sedfile %s", file);
X seq = popen(fromline, "r");
X fgets(fromline, sizeof(fromline), seq);
X pclose(seq);
X
X nl = index(fromline, '\n');
X if (nl != NULL)
X *nl = '\0';
X printf("submitter? RETURN = %s\n", fromline);
X gets(submitter);
X if (submitter[0] == '\0')
X strcpy(submitter, fromline);
X
X getwd(fromline);
X nl = rindex(fromline, '/');
X if (parts > 1)
X {
X *nl = '\0';
X nl = rindex(fromline, '/');
X }
X nl++;
X printf("group (sources, binaries)? RETURN = %s\n", nl);
X gets(group);
X if (group[0] == '\0')
X strcpy(group, nl);
X
X/* Get the volume number. */
X sprintf(command, "/lhome/twitterpater/koreth/Atari/volume %s", group);
X seq = popen(command, "r");
X if (seq == NULL)
X {
X fprintf(stderr, "error running '%s'\n", command);
X exit(1);
X }
X fscanf(seq, "%d", &volume);
X pclose(seq);
X
X/* Get the issue number. */
X sprintf(seqf, "/lhome/twitterpater/koreth/Atari/seq.%s", group);
X seq = fopen(seqf, "r");
X fscanf(seq, "%d", &issue);
X fclose(seq);
X printf("issue number of first part (RETURN=%d)?\n", issue);
X gets(buf);
X if (atoi(buf) > 0)
X issue = atoi(buf);
X if (parts > 1)
X {
X getwd(fromline);
X file = rindex(fromline, '/')+1;
X }
X printf("title (dir. name)? RETURN=%s\n", file);
X gets(title);
X if (title[0] == '\0')
X strcpy(title, file);
X printf("description?\n%79s\rSubject: vXXiXXX: %s -- ", "partXX/YY",
X title);
X gets(description);
X nl = group[0] == 's' ? "arc, uue, C" : "arc, uue";
X printf("keywords? RETURN=%s\n", nl);
X gets(keywords);
X if (keywords[0] == '\0')
X strcpy(keywords, nl);
X}
X
Xlethal(error)
Xchar *error;
X{
X perror(error);
X exit(-1);
X}
X
X/*
X * Open the header file.
X */
Xinit_net()
X{
X char filename[80];
X
X sprintf(filename, "/lhome/twitterpater/koreth/Atari/Header.%s%s", group,
X parts > 1 ? ".multi" : "");
X head = fopen(filename, "r");
X if (head == NULL)
X lethal("opening Header");
X}
X
Xexhale_header(fp)
XFILE *fp;
X{
X rewind(head);
X fprintu(head, fp);
X}
X
Xinhale_header(fp)
XFILE *fp;
X{
X char linebuf[1024];
X
X while (strlen(fgets(linebuf, 1024, fp)) > 1);
X}
X
Xcopy(in, out)
XFILE *in, *out;
X{
X char linebuf[1024];
X
X while (! feof(in))
X if (fgets(linebuf, 1024, in))
X fputs(linebuf, out);
X}
X
Xadd_index(fname)
Xchar *fname;
X{
X FILE *fp;
X char ifile[BUFSIZ], filedata[BUFSIZ];
X
X sprintf(ifile, "/lhome/twitterpater/koreth/Atari/%s/A-Index.1", group);
X
X fp = fopen(ifile, "a");
X sprintf(filedata, "v%02di%03d -- %s", volume, issue, title);
X if (part == 1)
X {
X if (parts > 1)
X {
X strcat(filedata, "/");
X strcat(filedata, fname);
X }
X fprintf(fp, "%-32s%s\n", filedata, description);
X }
X else
X fprintf(fp, "%s/%s\n", filedata, fname);
X fclose(fp);
X
X ifile[strlen(ifile)-1] = '2';
X
X fp = fopen(ifile, "a");
X sprintf(filedata, "volume%d/%s", volume, title);
X if (part == 1)
X {
X if (parts > 1)
X {
X strcat(filedata, "/");
X strcat(filedata, fname);
X }
X fprintf(fp, "%-32s%s\n", filedata, description);
X }
X else
X fprintf(fp, "%s/%s\n", filedata, fname);
X fclose(fp);
X}
X
X/*
X * Do string substitutions a la printf. Read the format from a file, and
X * write to another file.
X */
Xfprintu(infile, outfile)
XFILE *infile, *outfile;
X{
X char c;
X
X while ( (c = getc(infile)) != EOF )
X if (c == '%')
X switch (getc(infile)) {
X case EOF:
X break;
X
X case '%':
X fputc('%', outfile);
X break;
X
X case 'v':
X fprintf(outfile, "%d", volume);
X break;
X
X case 'V':
X fprintf(outfile, "%02d", volume);
X break;
X
X case 'i':
X fprintf(outfile, "%d", issue);
X break;
X
X case 'I':
X fprintf(outfile, "%03d", issue);
X break;
X
X case 't':
X fputs(title, outfile);
X break;
X
X case 'd':
X fputs(description, outfile);
X break;
X
X case 'P':
X fprintf(outfile, "%02d", part);
X break;
X
X case 'N':
X fprintf(outfile, "%02d", parts);
X break;
X
X case 'm':
X fputs(id, outfile);
X break;
X
X case 'r':
X fputs(oldid, outfile);
X break;
X
X case 's':
X fputs(submitter, outfile);
X break;
X
X case 'k':
X fputs(keywords, outfile);
X break;
X }
X else
X fputc(c, outfile);
X}
X
SHAR_EOF
chmod 0600 tweak.c || echo "restore of tweak.c fails"
sed 's/^X//' << 'SHAR_EOF' > ucat.c &&
X#include <stdio.h>
X#include <ctype.h>
X
X/*
X** UCAT.C
X**
X** Concatenates several files together, stripping off mail headers and
X** blank lines. Useful for putting multi-part uuencoded files together.
X*/
X
Xmain(argc, argv)
Xchar **argv;
X{
X int i;
X
X for (i=1; i < argc; i++)
X catfile(argv[i]);
X printf("end\n");
X}
X
Xint begun = 0;
X
Xcatfile(name)
Xchar *name;
X{
X FILE *fp;
X char ibuf[256];
X int blanked = 0;
X
X fp = fopen(name, "r");
X if (fp == NULL)
X {
X perror(name);
X return;
X }
X while (! feof(fp))
X {
X if (fgets(ibuf, 256, fp) == NULL)
X break;
X if (ibuf[1] == '\0')
X {
X blanked++;
X continue;
X }
X else if (! blanked)
X continue;
X if (islower(ibuf[0]))
X {
X if ((! begun) && (! strncmp(ibuf, "begin", 5)))
X {
X begun++;
X printf("%s", ibuf);
X }
X else if (begun && (! strncmp(ibuf, "table", 5)))
X do fgets(ibuf, 256, fp); while(ibuf[0] != 'b');
X continue;
X }
X if (ibuf[strlen(ibuf)-1] == '\n')
X {
X ibuf[strlen(ibuf)-1] = '\0';
X printf("%-70s\n", ibuf);
X }
X else
X printf("%s", ibuf);
X
X }
X fclose(fp);
X}
X
SHAR_EOF
chmod 0600 ucat.c || echo "restore of ucat.c fails"
sed 's/^X//' << 'SHAR_EOF' > newvol &&
X#!/bin/sh
X
Xif [ $# -ne 1 -o \( $1 != sources -a $1 != binaries \) ]; then
X echo usage: $0 'sources|binaries'
X exit 1
Xfi
X
Xvol=`volume $1`
X
Xecho Current $1 volume is $vol.
Xecho Type \"change\" to change, something else to abort.
X
Xread ver
X
Xif [ "$ver" != "change" ]; then
X exit 0
Xfi
X
Xvol=`expr $vol + 1`
X
Xecho New volume is $vol.
X
Xecho Creating directory.
Xcd /aux1/archives/comp.$1.atari.st
Xmkdir volume$vol
Xchmod 755 volume$vol
X
Xecho Adding header to global index.
Xcat >> Index << EOF
X
X-- VOLUME $vol --
X
XEOF
X
Xecho Creating new index file.
Xtouch volume$vol/Index
Xchmod 644 volume$vol/Index
X
Xecho Removing old index file links.
Xcd /lhome/twitterpater/koreth/Atari/$1
Xrm Index.1 Index.2
X
Xecho Making new index file links.
Xln -s /aux1/archives/comp.$1.atari.st/volume$vol/Index Index.1
Xln -s /aux1/archives/comp.$1.atari.st/Index Index.2
X
Xecho Resetting sequence file.
Xcd /lhome/twitterpater/koreth/Atari
Xrm seq.$1
Xecho 1 > seq.$1
X
Xcat << EOF
XDone.
X
X
X-----------------------
X
XNow post introductory articles and index.
X
X
XEOF
X
SHAR_EOF
chmod 0755 newvol || echo "restore of newvol fails"
sed 's/^X//' << 'SHAR_EOF' > nodocs.b &&
XPlease include some documentation with submissions to comp.binaries.atari.st.
XIf your software provides instructions when it's run, please give me a one-
Xor two-paragraph description of the program so that people will know whether
Xthey want it or not. A "README" or .DOC file inside archives is also
Xcustomary.
X
XThanks.
X
X-Steven Grimm
X Moderator, comp.binaries.atari.st
SHAR_EOF
chmod 0600 nodocs.b || echo "restore of nodocs.b fails"
sed 's/^X//' << 'SHAR_EOF' > post &&
X#!/bin/sh
X#
X# post [-d] group filename [maxparts]
X#
X# group should be s or b
X# if filename is a directory then part?? in it are posted
X#
X# if maxparts isn't specified, 5 is assumed
X#
X# -d means don't send whole article to Europe
X#
XBINVOL=volume`volume b`
XSRCVOL=volume`volume s`
Xexport NNTPSERVER; NNTPSERVER=exodus
X
XEUROPE='Prog-A16@VM.UoGuelph.CA'
X
Xif [ x$1 = x-d ]
Xthen
X dontsend=true
X shift
Xelse
X dontsend=false
Xfi
X
Xif [ $# -lt 2 ]
Xthen
X echo usage: $0 '[-d] s|b filename [maxparts]'
X exit 1
Xfi
X
Xif [ $# -eq 3 ]
Xthen
X maxparts=$3
Xelse
X maxparts=5
Xfi
X
Xif [ -d $2 ]
Xthen
X for i in $2/part??
X do
X if ls -l $i | grep -v '^....r..r.. '
X then
X if [ $maxparts -eq 0 ]
X then
X exit 0
X else
X maxparts=`expr $maxparts - 1`
X fi
X if inews -h $i
X then
X true
X else
X echo 'Inews error. Aborting.'
X exit 1
X fi
X if [ $dontsend = false ]
X then
X SUBJECT="`grep '^Subject:' $i |cut -d' ' -f2-`"
X Mail -s "$SUBJECT" $EUROPE < $i
X else
X head $i | Mail -s 'Atari header' $EUROPE
X fi
X chmod 644 $i
X fi
X done
X chmod 755 $2
Xelse
X if inews -h $2
X then
X true
X else
X echo 'Inews error. Aborting.'
X exit 1
X fi
X if [ $dontsend = false ]
X then
X SUBJECT="`grep '^Subject:' $2 | cut -d' ' -f2-`"
X Mail -s "$SUBJECT" $EUROPE < $2
X else
X head $2 | Mail -s 'Atari header' $EUROPE
X fi
X chmod 644 $2
Xfi
X
Xif [ $1 = s ]
Xthen
X cp -pr $2 /aux1/archives/comp.sources.atari.st/$SRCVOL
X rm -r $2
Xelse
X cp -pr $2 /aux1/archives/comp.binaries.atari.st/$BINVOL
X rm -r $2
Xfi
X
Xunexpand -a A-Index.1 >> Index.1
Xrm A-Index.1
Xunexpand -a A-Index.2 >> Index.2
Xrm A-Index.2
SHAR_EOF
chmod 0700 post || echo "restore of post fails"
sed 's/^X//' << 'SHAR_EOF' > sedfile &&
X/^From: /bfoo
Xd
X:foo
X/^From: /s/^From: \(.*\) *<\(.*\)>/From: \2 (\1)/
X/^From: /s/^From: \(.*\)!\(.*\)@\(.*\) (\(.*\))/From: \3!\1!\2 (\4)/
X/^From: /s/^From: //
X/ /s/ *)/)/g
X/(".*")/s/("\(.*\)")/(\1)/
X/LarsErikOsterud/s/Erik/-Erik /
X/uace0/s/ATARI Computer Enthusiasts/Michael B. Vederman/
SHAR_EOF
chmod 0600 sedfile || echo "restore of sedfile fails"
sed 's/^X//' << 'SHAR_EOF' > seq.binaries &&
X69
SHAR_EOF
chmod 0600 seq.binaries || echo "restore of seq.binaries fails"
sed 's/^X//' << 'SHAR_EOF' > seq.sources &&
X98
SHAR_EOF
chmod 0600 seq.sources || echo "restore of seq.sources fails"
sed 's/^X//' << 'SHAR_EOF' > unpack.ms &&
X.nr PS 12
X.nr VS 12
X.ND
X.if n \{
X.nr LL +1.5i
X.na
X.nh \}
X.ds LH Using Binaries
X.ds CH
X.ds RH -%-
X.DS C
XHOW TO USE COMP.BINARIES.ATARI.ST
X
Xby Steven Grimm
X
XLast update: August 13, 1991
X.DE
X.sp 2
X.NH
XWelcome to comp.binaries.atari.st!
X.PP
XHere you'll find a wealth of software for your Atari ST, from games to
Xspreadsheets to compilers -- all free and yours for the taking. This
Xdocument describes exactly how comp.binaries.atari.st works, and tells you
Xhow to get started. Don't worry if some of this seems
Xcomplex; it'll all become clear after a little use. The section "Getting
Xstarted" at the end of this document is worth reading if you're new to
Xall this. It gives you (reasonably) step-by-step instructions for obtaining
Xthe software you'll need to get going.
X.NH
XWhat are binaries?
X.PP
XBinaries are files that contain information other than normal text. Usually,
Xa binary that is posted to the net will contain executable (program) files.
XBinaries are distinct from \fIsources\fR, which are the human-readable text
Xfiles that are interpreted by a computer and used to produce binaries. Sources
Xcan be modified with relatively little effort, and are usually pretty easy
Xto read. Binaries are not intended to be viewed by a human.
X.NH 2
XUuencoding
X.PP
XThe programs which transfer network news messages (and electronic mail) are
Xnot always capable of handling a pure binary file. They are designed to handle
Xtextual messages, and the odd symbols and characters in a binary cause them
Xto become confused, and often to mangle the binaries. To avoid this problem,
Xa method called \fIuuencoding\fR is used. Uuencoding translates a binary file
Xinto text characters, so that the news and mail transport programs won't mess
Xup. The disadvantages are that uuencoded files are about 30% bigger than
Xthe raw binary files they represent, and that you have to go through one
Xextra step to get the binaries to work on your computer.
X.NH 2
XArchives or "arc files"
X.PP
XUsually, a program will need more than one file to work properly. The extra
Xfiles might be data files, help files, or maybe some instructions for the
Xuser. In order to easily package multiple files together in one binary file,
Xa program called "arc" (short for "archiver") is used. Arc also compresses
Xall the files as it packages them, so that the arcfile take up less disk space
X(and takes less time to download!) than it would if its contents were just
Xthrown together.
X.PP
XTo confuse matters even more, two new archive programs called "zoo"
Xand "lharc" can also be
Xused to achieve the same effect. Zoo is superior to arc in some respects,
Xslightly inferior in others, as is lharc. Unfortunately, you can't unpack
Xa zoo archive with arc or lharc, or vice versa (arc and lharc are similarly
Xincompatible with each other.)
X.NH 2
XUSENET articles
X.PP
XThe USENET has groups designed especially for transmission of binary files.
XThey are usually called something like "comp.binaries.x," where x is the type
Xof machine that the programs will run on. For Atari ST owners, the group to
Xwatch is comp.binaries.atari.st. Most of the binaries groups (including the
XAtari binaries group) are \fImoderated\fR, which means that you can't send
Xa program directly to everyone on the network. Instead, you send it to someone
Xin charge of the group (the \fImoderator\fR), who makes sure that your
Xprogram works and contains the proper documentation (or that the lack of
Xdocumentation is announced), and that it's in the correct format to be sent
Xout to the rest of the USENET.
X.PP
XOne of the restrictions of the USENET is that articles can only be a certain
Xlength. If a binary is longer than that, it must be split up into several
Xparts, each no longer than 45000 bytes or so. This introduces yet another
Xobstacle to people who want to transform the articles into a useful form,
Xbut it can't really be helped until the USENET starts running much more
Xadvanced news transmission software. Also, some particularly long programs
Xmay be posted over the course of several days; otherwise the net would be
Xoverloaded with lots of huge messages, and people would complain.
X.PP
XUSENET binaries are grouped into \fIvolumes\fR, each containing about 100
Xarticles. This is to make life easier for people who are trying to keep
Xtrack of which articles have been posted. When a new volume is started,
Xthe moderator will usually post introductory articles, including a list
Xof previously published articles.
X.NH
XHow do I get binaries?
X.PP
XThere are two ways to get binaries: first, by reading the USENET newsgroup
Xcomp.binaries.atari.st; you will see new articles within a week (usually
Xmuch less) of the time they were sent out by the moderator. If, for some
Xreason, your site doesn't receive comp.binaries.atari.st, or if you want
Xto look through previously posted articles, site twitterpater.eng.sun.com has all
Xthe binaries stored in its archives.
X.PP
XThe other way to get binaries is to request them from twitterpater's archive
Xserver. The archive server is a program that intercepts incoming mail
Xmessages and looks for commands inside them. You can tell it to list
Xthe available binaries, give you help, or send whichever files you're
Xinterested in. The requested files will be mailed to you. One thing to
Xbe careful of is that multi-part postings aren't placed in the archives
Xuntil all their parts have been sent out to the USENET at large. This is
Xto prevent people from requesting all 99 parts of a program the first day
Xit appears, thus overloading the net and defeating the purpose
Xof piece-by-piece posting.
X.PP
XTo find out more about the archive server, send a mail message containing
Xthe word "help" to archive-server@twitterpater.eng.sun.com. Talk to an
Xadministrator
Xat your site if that mail address doesn't work. If you don't get any
Xresponse from the archive server within a few days, something may be
Xwrong; mail archive-manager@twitterpater.eng.sun.com to report the problem.
X.PP
XThere are other archive sites, too, such as atari.archive.umich.edu; they
Xcontain most of the comp.binaries.atari.st software as well as some additional
Xprograms that have not appeared on the newsgroup. Some sites, such as
Xatari.archive, also offer something called "anonymous ftp" if you're on the
XInternet. Say "ftp atari.archive.umich.edu", and if you connect, use
X"anonymous" for a username, and your username for a password. See the
Xftp documentation at your site for more information. A recent, but
Xpossibly incorrect, list of alternate archive
Xsites appears at the end of this article.
XPlease send me mail if you know of any that aren't mentioned here,
Xor if my list is incorrect. Note that twitterpater does not offer anonymous
Xftp, as it's on a network that's segregated from the Internet.
X.PP
XTwitterpater also offers an "auto-index" service, for people who don't have
Xaccess to the USENET groups. If you request autoindex service, you will
Xreceive copies of the archive-server's index files for the binaries and
Xsources groups whenever new files are added. Note that if your site gets
Xcomp.binaries.atari.st, requesting autoindex is pointless and a waste of
Xnet bandwidth. Send mail to autoindex-request@twitterpater.eng.sun.com if
Xyou'd like to sign up.
X.NH
XHow do I decode the binaries?
X.PP
XAs stated above, turning binaries from USENET articles into a more useful
Xform can be a multi-step process. At the least, you will need the
X\fBuudecode\fR program; it is standard software on most
X.UX
Xsystems and is available in a couple of forms on the Atari. Versions for
Xother operating systems do exist, and can certainly be written with little
Xeffort. \fBArc\fR is available for
X.UX
Xand other operating systems, but is not standard software. In any case,
Xyou will want at least \fBarc\fR on your Atari.
X.PP
XUsually, things are been small enough to fit in one article, but you
Xwill almost certainly want to try something larger eventually. The Atari
X"uud" program (whose source code, also suitable for compilation on
X.UX
Xsystems, is available in the sources archive) is capable of easily
Xdecoding multi-part uuencoded files. Near the top of each part (except
Xthe first) will be a line like
X.DS
Xbegin part c foobar.uac
X.DE
X.PP
XRename each file (except part 1, which can be named "part01" or just
Xabout anything else) to the name at the end of this "begin" line, in
Xthis case "foobar.uac". Then run uud on the file containing part 1;
Xit contains instructions to cause uud to look for the other parts.
XIf you have a text editor or a
X.UX
Xstyle \fBcat\fR program, you can just stick all the parts together
Xin order and run uud on the resulting (big) file; it will try to go
Xon in the first file if it can't find the next part in a separate file.
XNote that \fBuud\fR won't warn you if it's overwriting an existing
Xfile, so don't give any of the parts the same name as the file that's
Xbeing extracted from them!
X.PP
XOn
X.UX
Xsystems, you can also say (for instance) "cat part* | uud -" without
Xrenaming anything.
X.PP
XIf you don't have \fBuud\fR or would prefer to decode your binaries
Xon your larger news computer, the procedure is somewhat more complex.
XPlain vanilla \fBuudecode\fR doesn't know about multi-part uuencoded
Xfiles, so you have to fool it into thinking that everything is in one
Xpart. First, stick all the parts together (using \fBcat\fR on
X.UX ).
XEdit the resulting file. Now remove all the extraneous lines of text
Xin between the parts -- this includes mail headers, any text, lines
Xof the form "include foobar.uad," "table" lines and the lists of
Xcharacters following them, and "begin" lines other than the one at
Xthe beginning of part 1. Once you have converted all the parts into
Xa big uuencoded mass (with no blank lines!), the regular \fBuudecode\fR
Xprogram will work.
X.PP
XObviously, this is something of a hassle, and the recommended procedure
Xis to try to install \fBuud\fR on your large computer. You'll usually
Xwant to minimize the amount of data you have to send to your Atari,
Xsince you'll most likely be downloading it at a relatively low speed,
Xand the uudecoded .arc file is the smallest thing you can download.
X.PP
XZoo is available from the archives. It is simple to use; refer to
Xthe documentation included in zoobin.arc (yes, you need to use arc to
Xextract zoo!) for more information. The uudecoding process is the
Xsame for zoo and arc files. A new version of zoo, 2.1, is in volume
X15 of the binaries archive. You'll need the old version of zoo to
Xunpack the new one. Zoo 2.1 is necessary to unpack "zoo-high" format
Xarchives (look at the Keywords: line of the article you're unpacking.)
X.PP
XTo extract lharc files, you should first try the program "lhx104" in
Xvolume 15 of the comp.binaries.atari.st archives. It's not in compressed
Xform, so all you'll need to do is uudecode the .TTP file. It will
Xunpack .LZH files.
X.PP
XMost archives contain documentation; refer to the instructions in a
Xspecific program for usage information and the like. If you have problems
Xwith a particular program, send mail to the submitter (listed near the
Xtop of each part.) The moderator doesn't have time to become very
Xfamiliar with all the programs that are posted, so the submitter will
Xprobably be much more helpful.
X.NH
XGetting started
X.PP
XA version of \fBuudecode\fR written in ST BASIC is available in twitterpater's
Xarchives (see above). It is in volume 1 of the comp.sources.atari.st
Xdirectory (note that that's \fIsources\fR and not binaries). To obtain it,
Xsend mail to archive-server@twitterpater.eng.sun.com, with the following
Xmessage body:
X.DS
Xsend sources/volume1 basic-uud
X.DE
X.PP
XThe archive server should reply quickly (the actual amount of time it takes
Xdepends on how your site is connected to the outside world) with the BASIC
Xprogram. Take off all the mail headers and introductory text (everything
Xabove the line that says "10 ' UUDECODE PROGRAM") and bring the file to your
XST using your communications program. (Refer to its documentation for specific
Xinstructions about that; every program does it in a different way.)
X.PP
XOnce you
Xhave basic-uud, you should get all six parts of the program "starter" from
Xvolume 16 of the binaries archive. The "starter" program, when run, writes
Xout copies of the utilities you'll need to start decoding and unpacking
Xcomp.binaries.atari.st articles. Send six more mail messages to
Xarchive-server@twitterpater.eng.sun.com, each with one of the following
Xrequests:
X.DS
Xsend binaries/volume16/starter part01
Xsend binaries/volume16/starter part02
Xsend binaries/volume16/starter part03
Xsend binaries/volume16/starter part04
Xsend binaries/volume16/starter part05
Xsend binaries/volume16/starter part06
X.DE
X.PP
XYou need to send separate mail messages because some mail systems won't handle
Xvery large pieces of mail, and if you requested all six parts at once, you
Xmight never see a reply!
X.PP
XCopy all six parts of starter, in order, into a single large file. Then go
Xthrough
Xand edit out the extra text between parts. Everything between (and including)
Xthe "include" line at the end of a part and the "begin" line at the beginning
Xof the next part should be removed. (Blank lines are bad, too; everything
Xfrom the "begin" at the top of the first part to the "end" at the end should
Xbe a solid row of 'M' characters along the left side, except a couple lines
Xabove the "end.")
X.PP
XUse the BASIC program to uudecode the resulting file, then run starter.tos.
XIt will write out copies of arc, zoo, lharc, uue, and uud (all described above.)
XYou're ready to begin!
X.sp
X.NH
XList of archive sites
X.PP
XNote: I have not verified these, so this list may be wrong.
XMail servers usually respond to the word "help"
Xalone in a mail message. Some of the sites listed below may not contain
Xfull archives of comp.binaries.atari.st, and some may have other files.
X.TS
Xl l l .
XAddress Type Comments
X_
Xwuarchive.wustl.edu ftp,nfs
Xux.acss.umn.edu ftp TeX, GNU
Xatari.archive.umich.edu ftp Mail server may also exist
Xhim1.cc.umich.edu ftp cd to pc7: directory
Xdsrgsun.ces.cwru.edu ftp GNU and Minix archives also
Xxanth.cs.odu.edu ftp
Xslug.pws.bull.com ftp comp.sources.atari.st only
Xrusmv1.rus.uni-stuttgart.de ftp European ftp site
Xarchive-server@
X twitterpater.eng.sun.com mail Official archives
Xarchive@softvax.radc.af.mil mail
Xunido!archive-server mail European archives
Xst_requests@
X n6vbg.hamavnet.com mail Dialup access at (714) 989-4276
Xmarks%mgse@rex.cs.tulane.edu uucp Ask your site administrator
X.TE
SHAR_EOF
chmod 0600 unpack.ms || echo "restore of unpack.ms fails"
sed 's/^X//' << 'SHAR_EOF' > update-autoindex &&
X#!/bin/sh
X
Xfor i in sources binaries; do
X cd /aux1/archives/comp.$i.atari.st
X diff -c Index.old Index | grep -v '^No diff' > /tmp/ai$$
X if [ -s /tmp/ai$$ ]; then
X cat - /tmp/ai$$ << EOF | /usr/lib/sendmail -t -farchive-server
XFrom: archive-server
XTo: autoindex
XSubject: Changes to $i index
X
XEOF
X fi
X rm /tmp/ai$$
X cp Index Index.old
Xdone
SHAR_EOF
chmod 0700 update-autoindex || echo "restore of update-autoindex fails"
sed 's/^X//' << 'SHAR_EOF' > volume &&
X#!/bin/sh
Xbasepath=/aux1/archives
X
Xif [ $# -ne 1 ]; then
X echo usage: $0 'binaries|sources' 1>&2
X exit 1
Xfi
X
Xcase $1 in
X s*) group=comp.sources.atari.st ;;
X b*) group=comp.binaries.atari.st ;;
X *) echo usage: $0 'binaries|sources' 1>&2
X exit 1 ;;
Xesac
X
Xcd $basepath/$group
X
X/bin/ls -d volume* | sed s/volume// | sort -nr | sed '2,$d'
SHAR_EOF
chmod 0755 volume || echo "restore of volume fails"
sed 's/^X//' << 'SHAR_EOF' > wrong-group &&
XYou should post requests for information or software, or other articles
Xcontaining things other than programs, to comp.sys.atari.st.
X
XComp.sources.atari.st and comp.binaries.atari.st are specifically for
Xdistribution of Atari ST software in source and binary form, respectively.
XBoth groups are moderated, which means that when you post an article to
Xeither of them, it's mailed to the moderator (me) and not shown to anyone
Xelse on the net.
SHAR_EOF
chmod 0600 wrong-group || echo "restore of wrong-group fails"
exit 0